package IO;

import java.io.*;
import java.util.Scanner;

public class IODemo8 {
    public static void main(String[] args) throws FileNotFoundException {
        //去文件中寻找内容中包含指定字符串的文件
        //需要从D盘目录一步一步往下递归
        //判断是否是普通文件,如果是目录继续向下递归
        //如果是普通文件就需要一个字节一个字节比较
        //用字符流读取
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要查找的根目录");
        String directory = scanner.next();
        File file = new File(directory);//从d盘开始检索
        if(!file.isDirectory()){
            System.out.println("您输入的根目录不存在");
            return;
        }
        System.out.println("请输入要查找的内容");
        String word = scanner.next();
        scanDir(file,word);


    }
    public static void scanDir(File t,String word)  {
        File[] files = t.listFiles();//获取文件
        if(files == null){
            return;//如果目录为空就返回
        }
        for (int i = 0; i < files.length; i++) {
            if(files[i].isDirectory()){
                //如果是目录就调用自己
                scanDir (files[i],word);
            }else if(files[i].isFile()){
                //如果是普通文件就调用inquire方法
                //如果是true就是找到了,打印这个文件的路径
               String str = readFile(files[i]);
               if(str.contains(word)){
                   System.out.println("包含要查找的关键字"+files[i].getAbsolutePath());
               }else {
                 //  System.out.println(files[i].getAbsolutePath());
               }
            }
        }
    }

    private static String readFile(File file)  {
        //将读取到的字节一个一个拷贝到String上
        StringBuilder stringBuilder = new StringBuilder();
      try (Reader reader = new FileReader(file)){
        while (true){
           int n = reader.read();
            if(n == -1){
                break;
            }
            stringBuilder.append((char) n);
        }
      } catch (IOException e) {
          e.printStackTrace();
      }
        return stringBuilder.toString();
    }


}
